//微信sdk调用类
define(function(require, exports, module) {
  const wx=require('wx');
  //要调用的方法
  const jsApiList=["chooseWXPay","scanQRCode","closeWindow"];
  const debug=false;
  module.exports={
      init:function (opt) {
          //微信js sdk配置
          wx.config({
              debug: debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
              appId: opt.appid, // 必填，公众号的唯一标识
              timestamp: opt.timestamp, // 必填，生成签名的时间戳
              nonceStr: opt.nonceStr, // 必填，生成签名的随机串
              signature: opt.signature,// 必填，签名，见附录1
              jsApiList: jsApiList // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
          });
          return new Promise(function(resolve, reject){
              wx.ready(function(){
                  // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
                  resolve();
              });
              wx.error(function(res){
                  // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
                  reject(res);
              });
          });
      },
      //支付
      pay:function (opt) {
          return new Promise(function(resolve, reject) {
              wx.chooseWXPay({
                  timestamp: opt.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
                  nonceStr: opt.nonceStr, // 支付签名随机串，不长于 32 位
                  package: opt.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
                  signType: 'MD5', // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
                  paySign: opt.sign, // 支付签名
                  success: function (res) {
                      // 支付成功后的回调函数
                      resolve(res);
                  },
                  fail:function (e) {
                      reject(e);
                      // 以键值对的形式返回，可用的api值true，不可用为false
                  }
              });
          });
      },
      pay2:function (opts) {
          return new Promise(function(resolve, reject) {
              if (typeof WeixinJSBridge == "undefined") {
                  reject('请在微信中使用支付功能！');
              } else {
                  WeixinJSBridge.invoke(
                      'getBrandWCPayRequest', {
                          "appId": opts.appId,     //公众号名称，由商户传入
                          "timeStamp": opts.timeStamp,         //时间戳，自1970年以来的秒数
                          "nonceStr": opts.nonceStr, //随机串
                          "package": opts.package,
                          "signType": "MD5",         //微信签名方式：
                          "paySign": opts.sign //微信签名
                      },
                      function (res) {
                          if (res.err_msg == "get_brand_wcpay_request:ok") {
                              resolve(res);
                          } else {
                              reject(res);
                          }
                      }
                  );
              }
          });
      },
      //调用扫描
      scan:function () {
          return new Promise(function(resolve, reject) {
              wx.scanQRCode({
                  needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
                  scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码，默认二者都有
                  success: function (res) {
                      resolve(res);
                  },
                  fail: function (e) {
                      reject(e);
                  }
              });
          });
      },
      //关闭网页窗口
      closeWindow:function () {
          wx.closeWindow();
      }
  };
});
